Intent常用於畫面的跳轉,也就是Activity之間的切換,而在Intent的使用中常伴隨著bundle來輔助傳資料,今天就講解一下他們的合作關係。
首先建立一個新的Activity,我命名為SecondActivity,方法如下
接者來簡單設計兩個的layout,這裡包含了傳值內容的EditText和負責跳轉Activity的Button。
最後來到今天的重頭戲,使用Intent和bundle的時候。
public class MainActivity extends AppCompatActivity {
private EditText et1,et2,et3;
private Button bt1;
private String content;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
bt1 = (Button)findViewById(R.id.bt1);
et1 = (EditText)findViewById(R.id.et1);
et2 = (EditText)findViewById(R.id.et2);
et3 = (EditText)findViewById(R.id.et3);
bt1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(et1.getText().toString().matches("")){ ㄎ
Toast.makeText(MainActivity.this,"說點甚麼吧",Toast.LENGTH_SHORT).show();
}
else if(et2.getText().toString().matches("")){
Toast.makeText(MainActivity.this,"請輸入日期~",Toast.LENGTH_SHORT).show();
}
else{
Bundle bundle = new Bundle();
Intent intent = new Intent();
//bundle可以根據要傳送的資料選擇put的型態,括號內分別是(key,value)
bundle.putString("content",et1.getText().toString());
bundle.putInt("month",Integer.parseInt(et2.getText().toString()));
bundle.putInt("date",Integer.parseInt(et3.getText().toString()));
//把bundle綁入Intent
intent.putExtras(bundle);
//設定要跳轉的兩個Activity
intent.setClass(MainActivity.this,SecondActivity2.class);
//啟動intent,執行畫面跳轉
startActivity(intent);
}
}
});
}
}
public class SecondActivity2 extends AppCompatActivity {
private TextView tx1,tx2,tx3;
private String content,month,date;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second2);
tx1 = (TextView)findViewById(R.id.tx1);
tx2 = (TextView)findViewById(R.id.tx2);
tx3 = (TextView)findViewById(R.id.tx3);
//取得bundle,慢慢拆解從Intent中找到附加的資料
Bundle bundle = getIntent().getExtras();
//拆出bundle的內容,key為content
content=bundle.getString("content");
//拆出bundle的內容,key為mounth,並將Int型態轉換為String
month = String.valueOf(bundle.getInt("month"));
//拆出bundle的內容,key為date,並將Int型態轉換為String
date = String.valueOf(bundle.getInt("date"));
tx1.setText(content);
tx2.setText(month);
tx3.setText(date);
}
}
今天Intent和bundle就講到這了,謝謝大家~